package com.lgl.allpeoplevent.ventIndex.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lgl.scsapi.base.dao.DaoSupport;
import com.lgl.scsapi.system.model.PageData;
import com.lgl.scsapi.vent.model.VentComment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 吐槽service
 */
@Slf4j
@Service
public class VentCommentService {
    @Autowired
    private DaoSupport dao;

    /**
     * 保存吐槽评论数据
     * @param ventComment 要保存的吐槽评论对象
     * @return 影响的行数
     */
    public int saveVentComment(VentComment ventComment) {
        return dao.save("VentCommentMapper.saveVentComment", ventComment);
    }
    /**
     * 保存评论点赞数据
     * @param ventLikePd 吐槽点赞参数
     * @return 保存的行数
     */
    @Async
    public Integer saveCommentLike(PageData ventLikePd) {
        return dao.save("VentCommentMapper.saveCommentLike", ventLikePd);
    }
    /**
     * 吐槽点赞总数+1
     * @param commentId 评论ID
     * @return 成功的行数
     */
    @Async
    public Integer likeTotalAddOne(Long commentId){
        return dao.update("VentCommentMapper.likeTotalAddOne", commentId);
    }
    /**
     * 获取吐槽的一级评论信息列表
     * @param pageNo 当前页号
     * @param pageSize  每页显示记录数
     * @param pageData  PageData参数
     * @return PageInfo对象
     */
    public PageInfo listOneLevelComment(int pageNo, int pageSize, PageData pageData) {
        PageHelper.startPage(pageNo,pageSize);
        List<VentComment> ventCommentList = (List<VentComment>) dao.findForList("VentCommentMapper.listOneLevelComment", pageData);
        return new PageInfo(ventCommentList);
    }
    /**
     * 获取吐槽的二级评论信息列表
     * @param pageData  PageData参数
     * @return 二级评论List
     */
    public List<VentComment> listTwoLevelComment(PageData pageData) {
        int start, twoPageSize;
        try {
            start = pageData.getInt("start");
        }catch (Exception e){
            start = 1;
        }
        try {
            twoPageSize = pageData.getInt("twoPageSize");
        }catch (Exception e){
            twoPageSize = 3;
        }
        pageData.put("start", start);
        pageData.put("twoPageSize",twoPageSize);
        return (List<VentComment>) dao.findForList("VentCommentMapper.listTwoLevelComment", pageData);
    }

}
